/** StateManager class ------------------------------------------------------**/
/** This classe manage the different states of the application
**/

#ifndef STATEMANAGER_CLASS_H_
#define STATEMANAGER_CLASS_H_

#include "State.h"

namespace BPL
{
class Context;
class StateManager : public StateListener
{
public :

    StateManager();
    virtual ~StateManager();

	void update(float dt);

	virtual void changeState(const StatePtr& state);
	virtual bool pushState(const StatePtr& state);
	virtual void popState();
	virtual void popAllStates();

protected :
	std::vector<StatePtr> mpt_ActiveStateStack;
};
}

#endif
